#include "led.h"

// HAL库中，是大量使用了这种策略
// 1.函数接口
// 2.函数的重写

/**
 * @brief  led的初始化
 * @retval None
 */
void led_init(void)
{
    // 大写+帕斯卡命名法
    GPIO_InitTypeDef GPIO_InitStruct = {0};

    /* GPIO Ports Clock Enable */
    __HAL_RCC_GPIOB_CLK_ENABLE(); // 开启GPIO的时钟

    /*Configure GPIO pin Output Level */
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // 先还原

    GPIO_InitStruct.Pin   = GPIO_PIN_0;
    GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP; // 推挽输出
    GPIO_InitStruct.Pull  = GPIO_PULLUP;         // 默认上拉，LED熄灭
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;

    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}

//__weak 函数，可以被同名的其他文件内的函数直接覆盖
void my_toggle3(void)
{
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
    HAL_Delay(200);
}
